package dao.Zeugnis;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import dao.DaoOberklasse;
import valueobjects.Zeugnis.Zeugnis;
import valueobjects.Zeugnis.ZeugnisImpl;

/**
 * Implementierung von {@link ZeugnisDAO}.
 * 
 * @author Tobias
 * 
 */
public class ZeugnisDAOImpl extends DaoOberklasse<Zeugnis> implements
		ZeugnisDAO {

	@Override
	public List<Zeugnis> holeAlleZeugnisse() {
		return this.executeSQLSelect("SELECT * FROM Zeugnis;");
	}

	public List<Zeugnis> executeSQLSelect(String sql) {
		ResultSet rs = this.connectionDAO.sqlSelectAusfuehren(sql);

		List<Zeugnis> zeugnisList = new ArrayList<Zeugnis>();
		try {
			while (rs.next()) {
				// Mapping von Resultset zu Objekten.
				;
				Zeugnis zeugnis = new ZeugnisImpl();

				zeugnis.setId(rs.getInt("zeugnis_id"));
				zeugnis.setDatum(rs.getDate("datum"));
				zeugnis.setBemerkung(rs.getString("bemerkung"));
				zeugnis.setJahrgang(rs.getString("jahrgang"));
				zeugnis.setFehltage(rs.getInt("fehltage"));
				zeugnisList.add(zeugnis);
			}
		} catch (SQLException e) {
			// Bei Fehlern.
			e.printStackTrace();
		}
		return zeugnisList;
	}

	@Override
	public void speichereZeugnis(Zeugnis zeugnis) {

		String sql = "INSERT INTO Zeugnis (jahrgang, fehltage, datum, bemerkung) "
				+ "VALUES ('"
				+ zeugnis.getJahrgang()
				+ "', "
				+ zeugnis.getFehltage()
				+ ", '"
				+ DateToSDF(zeugnis.getDatum())
				+ "', '" + zeugnis.getBemerkung() + "');";

		this.executeSQL(sql);
	}

	@Override
	public void loescheZeugnis(int id) {
		String sql = "DELETE FROM Zeugnis WHERE zeugnis_id = " + id + ";";
		this.executeSQL(sql);
	}

	@Override
	public void aendereZeugnis(Zeugnis zeugnis) {

		String sql = "UPDATE Zeugnis SET Jahrgang = '" + zeugnis.getJahrgang()
				+ "',fehltage = " + zeugnis.getFehltage() + ", datum = '"
				+ DateToSDF(zeugnis.getDatum()) + "', bemerkung = '"
				+ zeugnis.getBemerkung() + "' WHERE zeugnis_id = "
				+ zeugnis.getId() + ";";

		this.executeSQL(sql);

	}
}
